Finding Causes of Program Output with the Java Whyline (2009)